package com.entitymapper;

import com.entitymapper.field.FieldMapperToRead;
import com.entitymapper.field.FieldMapperToWrite;

/**
 * 该类定义了调用读写操作时，把保存中的数据与用户所以读写的数据进行一个转换的操作<br>
 * 该类的实现类会实现:<br>
 * 1. 把保存中的数据与用户所读与写的数据进行转换<br>
 * 2. 无法完成方法调用时抛出有明确异常信息的 @see com.entitymapper.EntityMapperException类型或子类型 
 * @author hhf
 */
public interface EntityMapper {
	
	/**
	 * 通过对象的类型，以及读写的格式进行读操作，返回该对象 无法完成就抛出异常
	 * @param entityType 表示对象的类型，如：User.class
	 * @param fmtr 	读写规则的接口
	 * @return 返回的一个传进来的对象：如User
	 * @throws EntityMapperException
	 */
	public Object readAsObject(Class<?> entityType, FieldMapperToRead fmtr) throws EntityMapperException;
	
	/**
	 * 通过对象的类型，以及读写的格式进行读操作，返回该对象 无法完成就抛出异常
	 * @param entityType 表示对象的类，如：User.class
	 * @param fmtw 读写规则的接口
	 * @throws EntityMapperException
	 */
	public void writeFromObject(Object object, FieldMapperToWrite fmtw) throws EntityMapperException;
	
	public void configure();
	
	public void configure(String fileName);
}
